System and method for using a graphical user interface to develop a virtual programmable logic controller

ABSTRACT

In one embodiment, a method for developing a virtual programmable logic controller (PLC) application using a graphical user interface (GUI) is disclosed. The method including receiving, from a first portion of the GUI representing a tool box, a first selection of a first object from a set of objects represented in the GUI, wherein each of the set of objects performs a respective function. The method also includes inserting, into a horizontal section of a second portion of the GUI representing the virtual PLC application, the first object, wherein the horizontal section includes a second object that executes simultaneously as the first object in the horizontal section. The method also includes compiling code implementing the first object and the second object to generate the virtual PLC application, and adding a shortcut of the virtual PLC application to a virtual tray of an operating system.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims priority to U.S. Provisional ApplicationNo. 63/023,630, titled “SYSTEM AND METHOD FOR USING A GRAPHICAL USERINTERFACE TO DEVELOP A VIRTUAL PROGRAMMABLE LOGIC CONTROLLER” filed May12, 2020, the contents of which is incorporated herein by reference inits entirety for all purposes.

TECHNICAL FIELD

This disclosure relates to a programmable logic controller. Morespecifically, this disclosure relates to a system and method for using agraphical user interface to develop a virtual programmable logiccontroller.

BACKGROUND

Programmable logic controllers (PLCs) may be digital computers that havebeen ruggedized and adapted for the control of manufacturing processes,such as assembly lines, or robotic devices, or any suitable activitythat calls for high reliability, and process fault diagnosis. Softwareapplications may be developed for the PLCs to control the operation ofthe PLCs. The PLCs may be connected to sensors and actuators of amachine.

PLC input may include simple digital elements such as limit switches,analog variables from process sensors (such as temperature andpressure), and more complex data such as that from positioning ormachine vision systems. PLC output can include elements such asindicator lamps, sirens, electric motors, pneumatic or hydrauliccylinders, magnetic relays, solenoids, or analog outputs. Theinput/output arrangements may be built into a simple PLC, or the PLC mayhave external I/O modules attached to a fieldbus or computer networkthat plugs into the PLC.

In some scenarios, a PLC may be used to emulate functions ofelectro-mechanical relays. In an electro-mechanical relay wiringdiagram, a group of contacts controlling one coil is called a “rung” ofa “ladder diagram”, and this concept is also used to describe PLC logic.Some models of PLC limit the number of series and parallel instructionsin one “rung” of logic. The output of each rung sets or clears a storagebit, which may be associated with a physical output address or which maybe an “internal coil” with no physical connection. Such internal coilscan be used, for example, as a common element in multiple separaterungs. Some PLCs enforce a strict left-to-right, top-to-bottom executionorder for evaluating the rung logic.

SUMMARY

Representative embodiments set forth herein disclose various techniquesfor enabling a system and method for management system data aggregationand transformation using client-specific criteria.

In one embodiment, a method for developing a virtual programmable logiccontroller (PLC) application using a graphical user interface (GUI) isdisclosed. The method including receiving, from a first portion of theGUI representing a tool box, a first selection of a first object from aset of objects represented in the GUI, wherein each of the set ofobjects performs a respective function. The method also includesinserting, into a horizontal section of a second portion of the GUIrepresenting the virtual PLC application, the first object, wherein thehorizontal section includes a second object that executes simultaneouslyas the first object in the horizontal section. The method also includescompiling code implementing the first object and the second object togenerate the virtual PLC application, and adding a shortcut of thevirtual PLC application to a virtual tray of an operating system.

In some embodiments, a tangible, non-transitory computer-readable mediumstoring instructions that, when executed, cause a processing device toperform one or more of the operations described above. In someembodiments, a system may include a memory storing instructions and aprocessor communicatively coupled to the memory. The processor mayexecute the instructions to perform one or more of the operationsdescribed above.

Other technical features may be readily apparent to one skilled in theart from the following figures, descriptions, and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

For a detailed description of example embodiments, reference will now bemade to the accompanying drawings in which:

FIG. 1 illustrates a high-level component diagram of an illustrativesystem architecture according to certain embodiments of this disclosure;

FIG. 2A illustrates a graphical user interface of a virtual programmablelogic controller (PLC) generator according to certain embodiments ofthis disclosure;

FIG. 2B illustrates a graphical user interface of a PLC generator usedto generate a virtual PLC application including nested objects accordingto certain embodiments of this disclosure;

FIG. 2C illustrates an example object for transferring data where theobject is included in the virtual PLC application according to certainembodiments of this disclosure;

FIG. 3 illustrates a user interface of an operating system including atray including a shortcut to a virtual PLC application according tocertain embodiments of this disclosure;

FIG. 4 illustrates virtual PLC application performing various operationsaccording to certain embodiments of this disclosure;

FIG. 5 illustrates example operations of a method for generating avirtual PLC application using a graphical user interface according tocertain embodiments of this disclosure; and

FIG. 6 illustrates an example computer system.

NOTATION AND NOMENCLATURE

Various terms are used to refer to particular system components.Different entities may refer to a component by different names—thisdocument does not intend to distinguish between components that differin name but not function. In the following discussion and in the claims,the terms “including” and “comprising” are used in an open-endedfashion, and thus should be interpreted to mean “including, but notlimited to . . . .” Also, the term “couple” or “couples” is intended tomean either an indirect or direct connection. Thus, if a first devicecouples to a second device, that connection may be through a directconnection or through an indirect connection via other devices andconnections.

The terminology used herein is for the purpose of describing particularexample embodiments only, and is not intended to be limiting. As usedherein, the singular forms “a,” “an,” and “the” may be intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. The method steps, processes, and operations described hereinare not to be construed as necessarily requiring their performance inthe particular order discussed or illustrated, unless specificallyidentified as an order of performance. It is also to be understood thatadditional or alternative steps may be employed.

The terms first, second, third, etc. may be used herein to describevarious elements, components, regions, layers and/or sections; however,these elements, components, regions, layers and/or sections should notbe limited by these terms. These terms may be only used to distinguishone element, component, region, layer or section from another region,layer or section. Terms such as “first,” “second,” and other numericalterms, when used herein, do not imply a sequence or order unless clearlyindicated by the context. Thus, a first element, component, region,layer or section discussed below could be termed a second element,component, region, layer or section without departing from the teachingsof the example embodiments. The phrase “at least one of,” when used witha list of items, means that different combinations of one or more of thelisted items may be used, and only one item in the list may be needed.For example, “at least one of: A, B, and C” includes any of thefollowing combinations: A, B, C, A and B, A and C, B and C, and A and Band C. In another example, the phrase “one or more” when used with alist of items means there may be one item or any suitable number ofitems exceeding one.

Moreover, various functions described below can be implemented orsupported by one or more computer programs, each of which is formed fromcomputer readable program code and embodied in a computer readablemedium. The terms “application” and “program” refer to one or morecomputer programs, software components, sets of instructions,procedures, functions, objects, classes, instances, related data, or aportion thereof adapted for implementation in a suitable computerreadable program code. The phrase “computer readable program code”includes any type of computer code, including source code, object code,and executable code. The phrase “computer readable medium” includes anytype of medium capable of being accessed by a computer, such as readonly memory (ROM), random access memory (RAM), a hard disk drive, acompact disc (CD), a digital video disc (DVD), solid state drives(SSDs), flash memory, or any other type of memory. A “non-transitory”computer readable medium excludes wired, wireless, optical, or othercommunication links that transport transitory electrical or othersignals. A non-transitory computer readable medium includes media wheredata can be permanently stored and media where data can be stored andlater overwritten, such as a rewritable optical disc or an erasablememory device.

The term “raw data” may refer to data stored in a first format by asensor at a machine.

The term “transformed data” may refer to data transformed to a secondformat by a virtual programmable logic controller application.

Definitions for other certain words and phrases are provided throughoutthis patent document. Those of ordinary skill in the art shouldunderstand that in many if not most instances, such definitions apply toprior as well as future uses of such defined words and phrases.

DETAILED DESCRIPTION

Developing applications to control PLCs may be technically challengingdue to the order of execution that PLCs often exhibit. For example, PLCsmay execute top-to-bottom and left-to-right. Controlling and enforcingobjects to perform functions in such an execution order can lead toinefficiencies such as problems with compilation that waste computingresources (e.g., processing, memory, network bandwidth). Also, there areoften tasks that are highly repetitive and cumbersome to perform for acomputer if not performed in a proper order. It may be desirable toprovide a technical solution to overcome these technical problems byproviding a way to generate virtual PLC applications to perform thetasks as desired in the top-to-bottom and left-to-right execution orderexhibited by PLCs.

Accordingly, the disclosed embodiments relate to systems and methods forusing an enhanced graphical user-interface (GUI) to develop a virtualPLC application. The enhanced GUI may include at least two portions. Thefirst portion of the GUI may include a toolbox of numerous objects thatimplement various programmable functions and logic. The second portionof the GUI may include an area for adding the objects from the toolboxand the area may represent the virtual PLC application. The area mayinclude a vertical section for adding objects to execute top-to-bottom,and a horizontal section that is encapsulated in the vertical section.The horizontal section may be an object. The objects in the horizontalsection execute left-to-right. The objects may compile and executesimultaneously in the horizontal section and the objects in the verticalsection may execute sequentially.

In some embodiments, there may be multiple objects (e.g., tools) thatperform specific, repetitive programmable functions and logic. Thevirtual PLC application may be included as part of a workbench withmultiple other virtual PLC applications. In some embodiments, theworkbench may be used to select a first virtual PLC applicationcontaining first objects and include the virtual PLC application as asecond object in a second virtual PLC application containing othersecond objects. Thus, the disclosed techniques may enable creatinghighly configurable, scalable, and extendable nested virtual PLCapplications that are combinations of other virtual PLC applicationsand/or objects. Using the workbench may enable reducing the amount oftime and computing resources consumed because a developer of a virtualPLC application may reuse one or more virtual PLC applicationsprogrammed to perform a desired function or functions. In someembodiments, once successfully compiled, a virtual PLC application andits objects may not need to be recompiled if the virtual PLC applicationand its objects are performing their desired function or functions.

In some embodiments, the virtual PLC generator may include operationsand/or graphical elements that enable defining properties, attributes,and/or functions of objects. For example, in the programming languageC#, Reflection may be used by the virtual PLC generator to describemetadata of types, methods and fields in code. Reflection may be used toobtain data about loaded assemblies, the elements within them likeclasses, methods and value types used by the objects and/or virtual PLCapplications. In some embodiments, the virtual PLC generator may useReflection to define the inputs and outputs at runtime for the virtualPLC applications that are generated.

Once the virtual PLC application is generated, a shortcut to the virtualPLC application may be created and added to a virtual tray in a userinterface of an operating system executing on a computing device. Addingthe shortcut to the virtual tray may provide easy access to the virtualPLC application for a person who desires the computing device to performthe one or more functions implemented by the objects of the virtual PLCapplication. Instead of having to perform the one or more functionsimplemented by the objects of the virtual PLC application individually,and having to switch between various screens/user interfaces of theoperating system, the shortcut to the virtual PLC application may enablean enhanced user interface and user experience by selecting the virtualPLC application one time to execute to perform the various operations.As such, a user experience using the computing device may be enhanced,thereby providing a technical benefit. Further, computing resources maybe reduced because the different applications are not opened thatperform the functions implemented by the virtual PLC application, andthe screens of those applications are not generated and switched betweenwhen the virtual PLC application executes. The GUI provides an enhanceduser interface for programming and configuring virtual PLC applicationsbecause of its visual convenience of arranging the objects in the secondportion of the GUI, among other things.

FIG. 1 illustrates a high-level component diagram of an illustrativesystem architecture 100 according to certain embodiments of thisdisclosure. In some embodiments, the system architecture 100 may includea machine 101, a computing device 102, a server 103, and/or a thirdparty database 129 that are communicatively coupled via a network 112.Each of the computing device 101, computing device 102, server 103,and/or machine 101 may include one or more processing devices, memorydevices, and network interface devices.

The network interface devices of the computing device 101, computingdevice 102, server 103, and/or machine 101 may enable communication viaa wireless protocol for transmitting data over short distances, such asBluetooth, ZigBee, near field communication (NFC), etc. Additionally,the network interface devices may enable communicating data over longdistances, and in one example, the computing device 101, computingdevice 102, server 103, and/or machine 101 may communicate with thenetwork 112. Network 112 may be a public network (e.g., connected to theInternet via wired (Ethernet) or wireless (WiFi)), a private network(e.g., a local area network (LAN), wide area network (WAN), virtualprivate network (VPN)), or a combination thereof.

The computing device 102 may be any suitable computing device, such as alaptop, tablet, smartphone, server, or computer. The computing device102 may run a virtual PLC generator 105 that is implemented in computerinstructions stored on a memory device and that is executed by aprocessing device. The virtual PLC generator 105 may be a computerapplication configured to enable designing, configuring, developing,generating, programming, testing, and/or compiling a virtual PLCapplication 108. The virtual PLC generator 105 includes a graphical userinterface (GUI) that enables easy, efficient, user-friendly, and visualdevelopment and generation of a virtual PLC application 108. Inparticular, due to the execution order of PLCs, the GUI includes avertical section for top-to-bottom execution and one or more horizontalsections for left-to-right execution. The horizontal sections may beencapsulated in, nested in, and/or embedded in the vertical section. TheGUI is described further with reference to FIG. 2. A developer may usethe GUI to add objects included in a tool box (first portion) of the GUIto a second portion of the GUI representing the virtual PLC application108. The developer may compile, using the virtual PLC generator 105, theobjects to generate the virtual PLC application 108. In someembodiments, the objects in the horizontal section may compilesimultaneously while the objects in the vertical section (not includedin the horizontal section) may compile sequentially. In someembodiments, the objects in both the horizontal and/or vertical sectionmay compile sequentially or simultaneously.

The machine 101 may include any suitable machine (e.g., an automationdevice such as an engine, a motor, a conveyor belt, a robot, a pump, adrill, a computer, etc.). The sensor 150 may perform measurements of themachine 101 to obtain raw data 151. The sensor 150 may be any suitablesensor (e.g., a pressure sensor, a proximity sensor, a vibration sensor,a water sensor, a temperature sensor, etc.) capable of performing ameasurement to obtain raw data. The raw data 151 may be in a firstformat.

In some embodiments, logic instructions may be implemented to performone or functions for each of the objects that are included in thetoolbox. One object may be programmed with logic instructions to readthe raw data 151 from the sensor 150, perform analysis on the raw data150 to generate transformed data 111, and store the transformed data 111in the database 129. Although depicted separately from the computingdevice 102 and the server, in some embodiments the database 129 may beentirely or partially stored and hosted on the computing device 102and/or the server. The objects may include logic instructions andconfiguration instructions that communicatively coupled directly to anaddress or source of the sensor 150, an address of source of thedatabase 129, or any suitable location where the raw data 151 and/ortransformed data 111 may be stored.

The first format of the raw data 151 may be defined in a first schemathat specifies the structure of the raw data 151. The raw data 151 maybe stored in one or more databases, one or more database collectionobjects, one or more flat files, one or more CSV file and/or otherdelimited files, one or more text files, one or more spreadsheet files,or the like.

The objects may include logic instructions that control the machine 101directly. For example, the logic instructions of certain objects maycause the computing device 102 to transmit control instructions orcommands via the network 112 to the machine 101 when the virtual PLCapplication 108 is executed. The control instructions may cause themachine 101 to actuate, may cause the sensor 150 to perform one or moreon-demand measurements, or the like. The objects may be programmed withany suitable repetitive functions or operations implementable by logicinstructions.

Once the virtual PLC generator 105 generates the virtual PLC application108. The virtual PLC application 108 may be stored in memory. A shortcutto the virtual PLC generator 105 may be placed in a virtual trayaccessible in a toolbar on a user interface of an operating systemexecuting on the computing device 102. Placing the shortcut in thevirtual tray provides quick and easy access to execute the virtual PLCapplication 108 and improves the user interface, thereby improving auser experience of using the computing device 102.

In some embodiments, one or more servers 103 may form a distributed,grid, and/or peer-to-peer (P2P) computing architecture. Each of theservers 103 may include one or more processing devices, memory devices,data storage, and/or network interface devices. The servers 103 may bein communication with one another via any suitable communicationprotocol. The servers 103 may be used to execute the virtual PLCgenerator and distribute a generate virtual PLC application 108 via thenetwork 112. Accordingly, a developer may remotely access the virtualPLC generator 105 using the server 103 to generate the virtual PLCapplication 108.

FIG. 2A illustrates a graphical user interface (GUI) 200 of a virtualprogrammable logic controller (PLC) generator 105 according to certainembodiments of this disclosure. The GUI 200 includes a first portion 202for a toolbox that includes numerous objects and propertyconfigurations. As depicted, the property for an object 204 named“synchronized” is currently selected and editable in the toolbox 202.The toolbox presents the fill direction for the object 204 as“horizontal”, which means the objects included in the object 204 mayexecute left-to-right and/or simultaneously.

The GUI 200 also includes a section portion 203 with a vertical section206 and a horizontal section 208. The horizontal section 208 isencapsulated in the vertical section 206. In some embodiments, avertical section 206 may be added into the horizontal section 208, suchthat that vertical section is nested or embedded or encapsulated in thehorizontal section 208.

The objects presented and available in the toolbox of the first portion202 may be selected and inserted into the section portion 203 to developand build the virtual PLC application 108. As depicted, the enhanced GUI200 enables enforcing the execution order of a PLC from top-to-bottomand left-to-right by using the vertical section 206 and the horizontalsection 208 (e.g., both of which may also be objects). In the depictedvirtual PLC application 108, the execution order may be object 210 firstthat produces an output, then the horizontal section 208 (object 204)using the output from object 210. The execution may proceed to executethe objects 212 and 214 from left-to-right simultaneously in thehorizontal section 208 before proceeding to execute the next object 216in the top-to-bottom sequence. The horizontal section 208 may produce acombined output of the outputs of the objects 212 and 214 that is inputinto the object 216. After execution of objects 212 and 214 completes,the virtual PLC application 108 may execute object 216 with the combinedoutput. After completion object 216, the virtual PLC application 108 mayexecute object 218 using the output from object 216.

The virtual PLC generator 105 may compile the objects 210, 212, 214,216, and 218. If compilation is successful, check marks may be presentedfor each respective object, as depicted. The toolbox may include a tabfor properties where the user may configure time sequencing for theobjects. The time sequencing may specify how long the objects shouldexecute, a time at which the objects should execute, and the like. Oncecompiled, the virtual PLC generator 105 may store an executable file ofthe virtual PLC application 108 in memory of the computing device 102.

FIG. 2B illustrates a graphical user interface of a virtual PLCgenerator 105 used to generate a virtual PLC application 108 includingnested objects according to certain embodiments of this disclosure. Asdepicted, the virtual PLC application 108 includes three objects 231,232, and 240 that are arranged in a vertical section, as such they willexecute from top-to-bottom in sequence. Object 231 executes first, thenupon completion, object 232 executes, and when object 232 is finishedexecuting, object 240 executes.

Notably, object 232 is a horizontal section that includes two nestedsections 233 and 234. As such, the objects 233 and 234 executesimultaneously with each other. When the horizontal section 233executes, the objects 235 and 236 execute simultaneously. The object 234is a vertical section that includes another nested horizontal section(object 237). As depicted, object 234 executes top-to-bottom byexecuting object 241 first and then object 237 sequentially. Object 237is a horizontal section that includes objects 238 and 239, which executesimultaneously with each other. Accordingly, the disclosed techniquesmay enable providing an enhanced graphical user interface for a virtualPLC generator 105 configured to generate virtual PLC applications 108that have any suitable configured of objects in vertical or horizontalsections to perform a desired operation.

Further, in some embodiments, the user interface may be referred to as aworkbench 249 herein. The workbench 249 may include a section where theobjects and/or other virtual PLC applications are arranged to generatenew virtual PLC application and different sections for a toolbox and/orspecialty tools. The enhanced user interface may include a portion 250for various objects (e.g., tools and specialty tools (also referred toas virtual PLC applications 108) that includes two different sections. Afirst section corresponds to a toolbox, which includes various objects(e.g., tools). The various objects may be programmed with computerinstructions to perform any suitable function and/or logic. For example,there objects for performing looping flow control, conditional Booleanlogic flow control, waiting time (e.g., dwell time) before executing anobject, an executable software application, a window, an operation thatsends data to a database, an operation that copies a file, an operationthat selects a particular product to analyze, etc. A second section ofthe portion 250 may correspond to specialty tools. The specialty toolsmay be virtual PLC applications 108 that are already compiled andinclude one or more objects that perform particular functions. Forexample, the specialty tools may include a database virtual PLCapplication 108 that enables accessing and/or interfacing with adatabase, a table display virtual PLC application 108 that enablespresenting a table, a folder watched virtual PLC application 108 thatenables monitoring a file to determine when it is modified and to copyits contents to another file at a different location to be ingested by adifferent software application, a file parser virtual PLC application108 that opens a file and parses its contents to transform the contentfrom a first data format to a second data format compatible with acertain software application, or the like. It should be noted that thevirtual PLC applications in the specialty tools section may also bereferred to as objects and used to create other virtual PLCapplications. The virtual PLC applications in the specialty toolssection and/or the objects in the toolbox section may be used in anycombination to generate new virtual PLC applications 108. For example,the “Virtual PLC application 1” in the specialty tools section maycorrespond to object 235 in FIG. 2B, and “Object 1” may correspond toobject 236 in FIG. 2B. Accordingly, the enhanced user interface enablesgenerating virtual PLC applications with nested and extendable logic inany suitable configuration.

The virtual PLC generator 105 may also include other graphical elementsthat enable ease of use and improve a user's experience using thecomputing device. For example, graphical element 252 (e.g., button),graphical element 254 (e.g., button), and graphical element 256 (e.g.,button) may enable the user to perform advanced operations. Thegraphical element 252 may enable the user to run the virtual PLCapplication 108 that is presented in the workbench 249 in a tray of theoperating system. Selecting such an option may cause an executablerepresenting the virtual PLC application 108 that is already stored at amemory location associated with the tray to be executed. Graphicalelement 254 may cause the virtual PLC application 108 that isrepresented, compiled, and created in the workbench 249 to be saved to amemory address that causes the virtual PLC application 108 to beincluded in the tray. For example, an icon associated with the virtualPLC application 108 may be included in the tray.

Graphical element 256 may enable the user to build a form that is afront-end graphical user interface associated with the virtual PLCapplication 108. The form may be configured such that it include variousinput elements, such as text boxes, buttons, drop down selectors, etc.The input elements may be configured such that they call various objectsof the virtual PLC application 108 to perform various functions ondemand.

In an example implementation, the virtual PLC generator 105 may be usedto generate a virtual PLC application 108 that includes objects thatenable interoperability between a machine 101 and a third-partyapplication (e.g., a reporting and control application). The objects maybe arranged in one or more horizontal sections or vertical sections. Forexample, the sensor 150 of the machine 101 may obtain variousmeasurements in the form of the raw data 151. The raw data 151 may besaved to a file at a location (e.g., file location, memory address,etc.) on a computer's memory. One object may include logic instructionsthat specify to monitor the location on the computer's memory todetermine when the file is modified (e.g., last saved date changes,memory size of the file increases or decreases, etc.). Responsive todetermining the file is modified, the object may open the file and parsethe content (e.g., text, audio, video, etc.) of the file. Another objectmay include logic instructions that determine a format of the content ofthe file (e.g., fields, attributes, properties, values, tags, etc.) andperform mapping operations that map the format of the content of thefile to a second format compatible with the third-party application.

In some embodiments, one or more templates may be obtained and thetemplates may specify the format of the content (e.g., measurements) ofthe file. For example, the manufacturer of the sensor 150 may providethe template or the template may be downloaded from any suitable source.In some embodiments, mappings may be determined using the templateswhere the fields, properties, attributes, tags, etc. in the template aremapped to corresponding fields, properties, attributes, tags, etc. in adata format compatible with the third-party application. For example,the mappings may specify that the field named “measurement type” ismapped to a field named “mst_typ” in an Extensible Markup Language (XML)file format. In some embodiments, the mappings may be defined by anadministrator. In some embodiments, to enable dynamic and a technicalimprovement, the computing device 102 or the server 103 may utilize anartificial intelligence engine that includes a training engine togenerate one or more machine learning models trained to analyzetemplates and generate mappings to a data format and file compatiblewith an application (e.g., third-party application). In someembodiments, the artificial intelligence engine is included in thevirtual PLC generator 105, and the artificial intelligence engine isimplemented in computer instructions stored on one or more memorydevices and executed by one or more processing devices.

In some embodiments, the training engine may be capable of generatingthe one or more machine learning models. The machine learning models maybe trained to discover or determine mappings between various fileformats or data formats and to perform the mappings to transform a filein a first format to a file in a second format, among other things. Insome embodiments, the one or more machine learning models may be trainedusing training data that includes various templates of first fileformats, various templates of second file formats, and mappings betweenthe first file formats and the second file formats. In some embodiments,the machine learning models may be triggered or operated based on thecontrol logic in the objects of the virtual PLC application 108. In someembodiments, the one or more machine learning models may be trained toperform any suitable function or make any suitable determination neededby an object that is implemented in the virtual PLC application 108. Forexample, the machine learning models may be trained to analyze thecontent of a file and to make a recommendation. In one example, the datamay indicate that a certain threshold measurement in the raw data 151has been exceeded and that the machine 101 is at risk for shutting down.In such a case, the machine learning models may be trained to determinethe threshold has been exceeded and to transmit a recommendation to thecomputing device 102 to shut down the machine 101. In other embodiments,the machine learning models may be trained to determine the thresholdhas been exceeded and to transmit a control instruction to the machine101, where the control instruction causes the machine 101 to shut down.Thus, the machine learning models may be generated and trained toperform control operations using objects included in the virtual PLCapplication 108.

The one or more machine learning models may be generated by the trainingengine and may be implemented in computer instructions executable by oneor more processing devices of the training engine, the server 103,and/or the computing device 102. To generate the one or more machinelearning models, the training engine may train the one or more machinelearning models.

The training engine may be a rackmount server, a router computer, apersonal computer, a portable digital assistant, a smartphone, a laptopcomputer, a tablet computer, a netbook, a desktop computer, an Internetof Things (IoT) device, any other desired computing device, or anycombination of the above. The training engine may be cloud-based, be areal-time software platform, include privacy software or protocols,and/or include security software or protocols.

The one or more machine learning models may refer to model artifactscreated by the training engine using training data that includestraining inputs and corresponding target outputs. The training enginemay find patterns in the training data wherein such patterns map thetraining input to the target output and generate the machine learningmodels that capture these patterns.

The one or more machine learning models may comprise, e.g., a singlelevel of linear or non-linear operations (e.g., a support vector machine[SVM]) or the machine learning models may be a deep network, i.e., amachine learning model comprising multiple levels of non-linearoperations. Examples of deep networks are neural networks, includinggenerative adversarial networks, convolutional neural networks,recurrent neural networks with one or more hidden layers, and fullyconnected neural networks (e.g., each neuron may transmit its outputsignal to the input of the remaining neurons, as well as to itself). Forexample, the machine learning model may include numerous layers and/orhidden layers that perform calculations (e.g., dot products) usingvarious neurons. In some embodiments, one or more of the machinelearning models may be trained to use causal inference andcounterfactuals.

Returning to the description of the example implementation, the objectmay transform the first format of the file to a second file having thesecond format compatible with the third-party application and store thesecond file in a location that is monitored by another object in thevirtual PLC generator 105. The object may include any suitable logicinstructions, such as a delay timer that causes the object to wait acertain period of time after the second file is saved to the targetlocation. Once the delay timer expires, the object may open the file,parse the content of the file, and store the file to correspondingfields, properties, tables, attributes, tags, etc. in a databaseassociated with the third-party application. Such an exampleimplementation provides a technical solution by using a virtual PLCapplication 108 that executes in an orderly fashion with a constrainedtop-to-bottom, left-to-right sequence to extract, transform, and migratedata between computer applications with disparate data formats. Thevirtual PLC application 108 may function as a process on a computeroperating system by actively running and monitoring for its triggerevent to occur (e.g., when a file changes) and to electronically beginexecution of its objects in their specific order. The virtual PLCapplication 108 may be disabled by an administrator or user, based on aschedule of operating, or based on a trigger event (e.g., thethird-party application is uninstalled, etc.).

It should be understood that the example implementation was forexplanatory purposes only, and the disclosure is not limited to theexample implementation. Any suitable implementation may be generatedusing the disclosed techniques. In other words, any virtual PLCapplication 108 may be created that includes one or more objectsprogrammed to perform any suitable operation (e.g., data creation, datamigration, data synchronization, data update, data delete, controloperation, decision logic, state machine logic, etc.). For example, theobject may be programmed with logic instructions configured to cause theobject, when executed by a processing device, to wait a certain amountof time, create a file having a particular type (e.g., XML, JavaScriptObject Notation, etc.), send a file, receive a file, transform a file,delete a file, update a file, send a message, create a message, receivea message, perform a control operation, or the like.

FIG. 2C illustrates an example object 250 for transferring data wherethe object is included in the virtual PLC application 108 according tocertain embodiments of this disclosure. As depicted, the user interfaceof the virtual PLC generator 105 provides a screen that depicts whichobjects and files to map to each other. For example, the screen depictsa file (“AttachedFile”) of an object (“Folder Watcher”) folder theobject is configured to monitor for file changes. In the depictedfigure, the user selects “AffectedFile”, which is populated in the“From” graphical box, then the user selects which object (“File Parser”)to transmit the file to when the file is modified. The user has selectedthe name of the file to be “FileName”. In some embodiments, the user mayuse the screen to map object interactions in any suitable manner.

As depicted, the “From” graphical box may correspond to an input of thevirtual PLC application 108 and the “Into” graphical box may correspondto an output of the virtual PLC application 108. The graphical userinterface may enable programming any Input/Output (10) attributes of avirtual PLC application 108 without actually programming computerinstructions. The graphical boxes “From” and “Into” may be associatedwith computer instructions that map the memory address located at thename of the file in the “From” graphical box to the memory addresslocated at the name of the file in the “Into” graphical box.

FIG. 3 illustrates a user interface 300 of an operating system includinga virtual tray 304 including a shortcut 304 to a virtual PLC application108 according to certain embodiments of this disclosure. The virtualtray 302 may be accessed via a toolbar 306 of the user interface 300.The shortcut 304 may be any suitable graphical and/or textualrepresentation or link to a memory location of the executableimplementing the virtual PLC application 108.

FIG. 4 illustrates virtual PLC application 108 performing variousoperations according to certain embodiments of this disclosure. Theobjects included in the virtual PLC application 108 may becommunicatively connected and/or coupled to the database 129 (datastore) and the machine 101. The objects may be configured (e.g.,programmed with logic instructions) to obtain data from the machine 101(via the sensor 150, a computing device included in the machine 101, amemory device storing data in the machine 101, or the like). The datamay be raw data 151 and the virtual PLC application 108 may perform anoperation on the data, such as transform the data, and store the data(raw or transformed) in the database 129. The objects may also perform acontrol operation based on the data or based on logic instructions. Forexample, the objects may transmit a control instruction to the machine101 to cause the machine to perform an operation.

FIG. 5 illustrates example operations of a method 500 for generating avirtual PLC application using a graphical user interface (GUI) accordingto certain embodiments of this disclosure. The method 500 may beperformed by processing logic that may include hardware (circuitry,dedicated logic, etc.), software, or a combination of both. The method500 and/or each of their individual functions, subroutines, oroperations may be performed by one or more processing devices of acomputing device (e.g., any component (computing device 102) of FIG. 1)implementing the method 500. The method 500 may be implemented ascomputer instructions stored on a memory device and executable by theone or more processing devices. In certain implementations, the method500 may be performed by a single processing thread. Alternatively, themethod 500 may be performed by two or more processing threads, eachthread implementing one or more individual functions, routines,subroutines, or operations of the methods.

At block 502, a processing device may receive, from a first portion ofthe graphical user interface (GUI) representing a tool box, a firstselection of a first object from a set of objects represented in theGUI. Each of the set of objects may perform a respective function. Insome embodiments, the selection may be a drag-and-drop operation ofclicking on the object in the tool box and dragging it into a secondportion of the GUI representing the virtual PLC application. In someembodiments, the selection may be a selection of the object in the toolbox and then a selection of a graphical element (e.g., button) thatcauses the selected object to be inserted into the second portion of theGUI.

The objects may be implemented in computer instructions. The objects maybe a variable, a data structure, a function, or a method, and as such,may be a value in memory referenced by an identifier. In a class-basedobject-oriented programming paradigm, an object refers to a particularinstance of a class, where the object may be a combination of variables,functions, and data structures. In relational database management, anobject may be a table or column, or an association between data and adatabase entity. In some instances, the objects may be referred to aswidgets. Each of the objects may be associated with a set of properties.The properties may include a name of the object, whether the object isto be inserted into a horizontal (left-to-right) or vertical section(top-to-bottom) of a second portion of the GUI representing the virtualPLC application, or the like.

PLC applications may execute in a particular order, and that order maybe from left-to-right and top-to-bottom. If there are multiple objectsin a horizontal section, the processing device may execute those objectssimultaneously, left-to-right, before moving down to execute anotherobject that is vertically lower the objects in the horizontal section.In some embodiments, the objects in the horizontal section mayconjunctively generate a single output that is used to input into a nextsequential object vertically lower and immediately below the horizontalsection.

At block 504, the processing device may insert, into a horizontalsection of a second portion of the GUI representing the virtual PLCapplication, the first object that was selected. The horizontal sectionmay include a second object that executes simultaneously as the firstobject in the horizontal section. The outputs from each of the first andthe second object may be combined in some manner to generate a combinedoutput that is output by the horizontal section. In some embodiments,the output from the first object is input to the second object thatgenerates an output.

In some embodiments, the processing device may receive, from the firstportion of the GUI representing the tool box, a second selection of athird object from the set of objects represented in the GUI. Theprocessing device may insert, into the vertical section of the secondportion of the GUI, the third object, wherein the third object executessequentially in the vertical section after the horizontal sectionexecutes.

In some embodiments, the first object and the second object may beconnected to a data store (e.g., database 129) and a machine 101. Thefirst object and the second object may be configure to obtain data fromthe machine and store the data in the data store. In some embodiments,the first object and the second object may be communicatively coupled toa machine 101 and are configured to transmit control instructions to themachine 101 to cause the machine 101 to perform an operation. Theoperation may be an actuation of a part of the machine 101, performing ameasurement using the sensor 150, or the like.

In some embodiments, the processing device may receive logicinstructions to implement the respective function for each of theobjects that are inserted into the second portion of the GUI. The logicinstructions may be written in any suitable programming language and mayspecify the one or more functions for each of the objects to perform. Insome embodiments, the processing device may receive an indication of atime sequence for execution of each object of the set of objects. Thetime sequence may specify how long the object is to execute, aparticular time at which the object is to execute, or some combinationthereof.

At block 506, the processing device may compile code (computerinstructions) implementing the first object, the second object, and thethird object to generate the virtual PLC application. Any suitablecompiler may be used to compile the code. The virtual PLC applicationthat is generated may be an executable that is stored in memory of thecomputing device on which the compilation is performed. There may beother objects in the second portion that are implemented in code togenerate the virtual PLC application. For example, as depicted in FIG.2, there may be objects that are above and below the horizontal sectionand those objects may be located in the vertical section of the GUI inwhich the horizontal section is encapsulated or embedded. In someembodiments, there may be numerous horizontal sections in the secondportion of the GUI and the numerous horizontal sections may include anysuitable number of objects. The GUI provides an enhanced user interfacefor programming and configuring virtual PLC applications because of itsvisual convenience of arranging the objects in the second portion of theGUI, among other things.

At block 508, the processing device may add a shortcut of the virtualPLC application to a virtual tray of an operating system executing onthe computing device 102. As discussed above, generating the virtual PLCapplication and adding a shortcut to the virtual PLC application in avirtual tray provides numerous benefits over conventional techniques. Insome embodiments, the processing device may receive a selection of theshortcut to the virtual PLC application in the virtual tray, and theprocessing device may execute the virtual PLC application to performfunction(s) implemented by the first object and the second objectsimultaneously. Further, after execution of the first object and thesecond object, the processing device may execute the third object thatis vertically lower and next in a sequential order after the horizontalsection is executed.

FIG. 6 illustrates an example computer system 600, which can perform anyone or more of the methods described herein. In one example, computersystem 600 may correspond to the computing device 102, the machine 101,the sensor 150, the server 103, or the database 129 of FIG. 1. Thecomputer system 600 may be capable of executing the virtual PLCgenerator 105, the virtual PLC application 108, and/or hosting thedatabase 129 of FIG. 1. The computer system 600 may be connected (e.g.,networked) to other computer systems in a LAN, an intranet, an extranet,or the Internet. The computer system 600 may operate in the capacity ofa server in a client-server network environment. The computer system 600may be a personal computer (PC), a tablet computer, a wearable (e.g.,wristband), a set-top box (STB), a personal Digital Assistant (PDA), amobile phone, a camera, a video camera, or any device capable ofexecuting a set of instructions (sequential, parallel, or otherwise)that specify actions to be taken by that device. Further, while only asingle computer system is illustrated, the term “computer” shall also betaken to include any collection of computers that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methods discussed herein.

The computer system 600 includes a processing device 602, a main memory604 (e.g., read-only memory (ROM), solid state drive (SSD), flashmemory, dynamic random access memory (DRAM) such as synchronous DRAM(SDRAM)), a static memory 606 (e.g., solid state drive (SSD), flashmemory, static random access memory (SRAM)), and a data storage device608, which communicate with each other via a bus 610.

Processing device 602 represents one or more general-purpose processingdevices such as a microprocessor, central processing unit, or the like.More particularly, the processing device 602 may be a complexinstruction set computing (CISC) microprocessor, reduced instruction setcomputing (RISC) microprocessor, very long instruction word (VLIW)microprocessor, or a processor implementing other instruction sets orprocessors implementing a combination of instruction sets. Theprocessing device 602 may also be one or more special-purpose processingdevices such as an application specific integrated circuit (ASIC), afield programmable gate array (FPGA), a digital signal processor (DSP),network processor, or the like. The processing device 602 is configuredto execute instructions for performing any of the operations andfunctions of any method discussed herein.

The computer system 600 may further include a network interface device612. The computer system 600 also may include a video display 614 (e.g.,a liquid crystal display (LCD) or a cathode ray tube (CRT)), one or moreinput devices 616 (e.g., a keyboard, a touchpad, a microphone, and/or amouse), and one or more speakers 618 (e.g., a speaker). In oneillustrative example, the video display 614 and the input device(s) 616may be combined into a single component or device (e.g., an LCD touchscreen).

The data storage device 616 may include a computer-readable medium 620on which the instructions 622 embodying any one or more of the methodsor functions described herein are stored. The instructions 622 may alsoreside, completely or at least partially, within the main memory 604and/or within the processing device 602 during execution thereof by thecomputer system 600. As such, the main memory 604 and the processingdevice 602 also constitute computer-readable media. The instructions 622may further be transmitted or received over a network 112 via thenetwork interface device 612.

While the computer-readable storage medium 620 is shown in theillustrative examples to be a single medium, the term “computer-readablestorage medium” should be taken to include a single medium or multiplemedia (e.g., a centralized or distributed database, and/or associatedcaches and servers) that store the one or more sets of instructions. Theterm “computer-readable storage medium” shall also be taken to includeany medium that is capable of storing, encoding or carrying a set ofinstructions for execution by the machine and that cause the machine toperform any one or more of the methodologies of the present disclosure.The term “computer-readable storage medium” shall accordingly be takento include, but not be limited to, solid-state memories, optical media,and magnetic media.

The various aspects, embodiments, implementations or features of thedescribed embodiments can be used separately or in any combination. Theembodiments disclosed herein are modular in nature and can be used inconjunction with or coupled to other embodiments, including bothstatically-based and dynamically-based equipment. In addition, theembodiments disclosed herein can employ selected equipment such thatthey can identify individual users and auto-calibrate thresholdmultiple-of-body-weight targets, as well as other individualizedparameters, for individual users.

Clause 1. A method for developing a virtual programmable logiccontroller (PLC) application using a graphical user interface (GUI), themethod comprising:

receiving, from a first portion of the GUI representing a tool box, afirst selection of a first object from a plurality of objectsrepresented in the GUI, wherein each of the plurality of objectsperforms a respective function;

inserting, into a horizontal section of a second portion of the GUIrepresenting the virtual PLC application, the first object, wherein thehorizontal section comprises a second object that executessimultaneously as the first object in the horizontal section;

compiling code implementing the first object and the second object togenerate the virtual PLC application;

adding a shortcut of the virtual PLC application to a virtual tray of anoperating system.

Clause 2. The method of any preceding clause, wherein the horizontalsection is encapsulated in a vertical section of the second portion ofthe GUI.

Clause 3. The method of any preceding clause, wherein prior to compilingthe code, the method further comprising:

receiving, from the first portion of the GUI representing the tool box,a second selection of a third object from the plurality of objectsrepresented in the GUI;

inserting, into the vertical section of the second portion of the GUI,the third object, wherein the third object executes sequentially in thevertical section after the horizontal section executes.

Clause 4. The method of any preceding clause, wherein the selectioncomprises a drag-and-drop operation.

Clause 5. The method of any preceding clause, wherein the first objectand the second object are connected to a data store and a machine, andthe first object and the second object are configured to obtain datafrom the machine and store the data in the data store.

Clause 6. The method of any preceding clause, wherein the first objectand the second object are communicatively coupled to a machine and areconfigured to transmit control instructions to the machine to cause themachine to perform an operation.

Clause 7. The method of any preceding clause, wherein prior to compilingthe code, the method further comprising receiving logic instructions toimplement the respective function for each of the objects.

Clause 8. The method of any preceding clause, wherein prior to compilingthe code, the method further comprising receiving an indication of atime sequence for execution of each object of the plurality of objects.

Clause 9. The method of any preceding clause, further comprising:

receiving a selection of the shortcut; and

executing the virtual PLC application to perform functions implementedby the first object and the second object simultaneously.

Clause 10. A tangible, non-transitory computer-readable medium storinginstructions that, when executed, cause a processing device to:

receive, from a first portion of a graphical user interface (GUI)representing a tool box, a first selection of a first object from aplurality of objects represented in the GUI, wherein each of theplurality of objects performs a respective function;

insert, into a horizontal section of a second portion of the GUIrepresenting the virtual PLC application, the first object, wherein thehorizontal section comprises a second object that executessimultaneously as the first object in the horizontal section;

compile code implementing the first object and the second object togenerate a virtual PLC application;

add a shortcut of the virtual PLC application to a virtual tray of anoperating system.

Clause 11. The computer-readable medium of any preceding clause, whereinthe horizontal section is encapsulated in a vertical section of thesecond portion of the GUI.

Clause 12. The computer-readable medium of any preceding clause, whereinprior to compiling the code, the processing device further to:

receive, from the first portion of the GUI representing the tool box, asecond selection of a third object from the plurality of objectsrepresented in the GUI;

insert, into the vertical section of the second portion of the GUI, thethird object, wherein the third object executes sequentially in thevertical section after the horizontal section executes.

Clause 13. The computer-readable medium of any preceding clause, whereinthe selection comprises a drag-and-drop operation.

Clause 14. The computer-readable medium of any preceding clause, whereinthe first object and the second object are connected to a data store anda machine, and the first object and the second object are configured toobtain data from the machine and store the data in the data store.

Clause 15. The computer-readable medium of any preceding clause, whereinthe first object and the second object are communicatively coupled to amachine and are configured to transmit control instructions to themachine to cause the machine to perform an operation.

Clause 16. The computer-readable medium of any preceding clause, whereinprior to compiling the code, the method further comprising receivinglogic instructions to implement the respective function for each of theobjects.

Clause 17. The computer-readable medium of any preceding clause, whereinprior to compiling the code, the method further comprising receiving anindication of a time sequence for execution of each object of theplurality of objects.

Clause 18. The computer-rseadable medium of clause 10, wherein theprocessing device is further to:

receive a selection of the shortcut; and

execute the virtual PLC application to perform functions implemented bythe first object and the second object simultaneously.

Clause 19. A system comprising:

a memory device storing instructions;

a processing device communicatively coupled to the memory device, theprocessing device executes the instructions to:

receive, from a first portion of a graphical user interface (GUI)representing a tool box, a first selection of a first object from aplurality of objects represented in the GUI, wherein each of theplurality of objects performs a respective function;

insert, into a horizontal section of a second portion of the GUIrepresenting the virtual PLC application, the first object, wherein thehorizontal section comprises a second object that executessimultaneously as the first object in the horizontal section;

compile code implementing the first object and the second object togenerate a virtual PLC application;

add a shortcut of the virtual PLC application to a virtual tray of anoperating system.

Clause 20. The system of any preceding clause, wherein the horizontalsection is encapsulated in a vertical section of the second portion ofthe GUI, and the processing device further to:

receive, from the first portion of the GUI representing the tool box, asecond selection of a third object from the plurality of objectsrepresented in the GUI;

insert, into the vertical section of the second portion of the GUI, thethird object, wherein the third object executes sequentially in thevertical section after the horizontal section executes.

1. A method for developing a virtual programmable logic controller (PLC)application using a graphical user interface (GUI), the methodcomprising: receiving, from a first portion of the GUI representing atool box, a first selection of a first object from a plurality ofobjects represented in the GUI, wherein each of the plurality of objectsperforms a respective function; inserting, into a horizontal section ofa second portion of the GUI representing the virtual PLC application,the first object, wherein the horizontal section comprises a secondobject that executes simultaneously as the first object in thehorizontal section; compiling code implementing the first object and thesecond object to generate the virtual PLC application; adding a shortcutof the virtual PLC application to a virtual tray of an operating system.2. The method of claim 1, wherein the horizontal section is encapsulatedin a vertical section of the second portion of the GUI.
 3. The method ofclaim 2, wherein prior to compiling the code, the method furthercomprising: receiving, from the first portion of the GUI representingthe tool box, a second selection of a third object from the plurality ofobjects represented in the GUI; inserting, into the vertical section ofthe second portion of the GUI, the third object, wherein the thirdobject executes sequentially in the vertical section after thehorizontal section executes.
 4. The method of claim 1, wherein theselection comprises a drag-and-drop operation.
 5. The method of claim 1,wherein the first object and the second object are connected to a datastore and a machine, and the first object and the second object areconfigured to obtain data from the machine and store the data in thedata store.
 6. The method of claim 1, wherein the first object and thesecond object are communicatively coupled to a machine and areconfigured to transmit control instructions to the machine to cause themachine to perform an operation.
 7. The method of claim 1, wherein priorto compiling the code, the method further comprising receiving logicinstructions to implement the respective function for each of theobjects.
 8. The method of claim 1, wherein prior to compiling the code,the method further comprising receiving an indication of a time sequencefor execution of each object of the plurality of objects.
 9. The methodof claim 1, further comprising: receiving a selection of the shortcut;and executing the virtual PLC application to perform functionsimplemented by the first object and the second object simultaneously.10. A tangible, non-transitory computer-readable medium storinginstructions that, when executed, cause a processing device to: receive,from a first portion of a graphical user interface (GUI) representing atool box, a first selection of a first object from a plurality ofobjects represented in the GUI, wherein each of the plurality of objectsperforms a respective function; insert, into a horizontal section of asecond portion of the GUI representing the virtual PLC application, thefirst object, wherein the horizontal section comprises a second objectthat executes simultaneously as the first object in the horizontalsection; compile code implementing the first object and the secondobject to generate a virtual PLC application; add a shortcut of thevirtual PLC application to a virtual tray of an operating system. 11.The computer-readable medium of claim 10, wherein the horizontal sectionis encapsulated in a vertical section of the second portion of the GUI.12. The computer-readable medium of claim 11, wherein prior to compilingthe code, the processing device further to: receive, from the firstportion of the GUI representing the tool box, a second selection of athird object from the plurality of objects represented in the GUI;insert, into the vertical section of the second portion of the GUI, thethird object, wherein the third object executes sequentially in thevertical section after the horizontal section executes.
 13. Thecomputer-readable medium of claim 10, wherein the selection comprises adrag-and-drop operation.
 14. The computer-readable medium of claim 10,wherein the first object and the second object are connected to a datastore and a machine, and the first object and the second object areconfigured to obtain data from the machine and store the data in thedata store.
 15. The computer-readable medium of claim 10, wherein thefirst object and the second object are communicatively coupled to amachine and are configured to transmit control instructions to themachine to cause the machine to perform an operation.
 16. Thecomputer-readable medium of claim 10, wherein prior to compiling thecode, the method further comprising receiving logic instructions toimplement the respective function for each of the objects.
 17. Thecomputer-readable medium of claim 10, wherein prior to compiling thecode, the method further comprising receiving an indication of a timesequence for execution of each object of the plurality of objects. 18.The computer-readable medium of claim 10, wherein the processing deviceis further to: receive a selection of the shortcut; and execute thevirtual PLC application to perform functions implemented by the firstobject and the second object simultaneously.
 19. A system comprising: amemory device storing instructions; a processing device communicativelycoupled to the memory device, the processing device executes theinstructions to: receive, from a first portion of a graphical userinterface (GUI) representing a tool box, a first selection of a firstobject from a plurality of objects represented in the GUI, wherein eachof the plurality of objects performs a respective function; insert, intoa horizontal section of a second portion of the GUI representing thevirtual PLC application, the first object, wherein the horizontalsection comprises a second object that executes simultaneously as thefirst object in the horizontal section; compile code implementing thefirst object and the second object to generate a virtual PLCapplication; add a shortcut of the virtual PLC application to a virtualtray of an operating system.
 20. The system of claim 19, wherein thehorizontal section is encapsulated in a vertical section of the secondportion of the GUI, and the processing device further to: receive, fromthe first portion of the GUI representing the tool box, a secondselection of a third object from the plurality of objects represented inthe GUI; insert, into the vertical section of the second portion of theGUI, the third object, wherein the third object executes sequentially inthe vertical section after the horizontal section executes.